For consumer-facing websites, having a scalable system to handle increasing user traffic is often important. Traditionally, data is stored persistently in a relational database system (RDMS) and cached in a multi-tier or multi-layer software system for fast serving. Scaling the multi-tier software system is frequently a challenging and expensive proposition. For example, traditional systems may partition data over a set of nodes, allowing scalability to be achieved by adding nodes. Examples of such traditional systems include Amazon Dynamo and Platform for Nimble Universal Table Storage (PNUTS) of Yahoo!'s Sherpa data services platformi. Although distributing data over multiple nodes may simplify the data layer, this solution places additional responsibility on the application layer. Additionally, some traditional solutions sacrifice one or more properties that guarantee database transactions are processed reliably (e.g., atomicity, consistency, isolation, or durability) in favor of scalability. Furthermore, some traditional solutions depend on distributing the data across nodes that are homogenous, particularly in terms of the underlying storage technologies used by the nodes.